#ifndef GPUMONITORFACTORY_H
#define GPUMONITORFACTORY_H
#include <gpu_monitor_interface.h>
#include <memory>

/**
 * @brief GPU监视器工厂，用于创建指定类型的GPU监视器
 */
class GpuMonitorFactory
{
public:
    /**
     * @brief GPU型号厂商
     */
    enum GPUVendor {
        NV,         // NVIDIA
        AMD,        // AMD
        Intel,      // Intel Iris
        PVR,        // Imagination PowerVR
        MTT,        // 摩尔线程
        Mali,       // ARM Mali GPU
        VideoCore,  // 树莓派Broadcom的GPU
        Unknown     // 未知
    };


    /**
     * @brief 创建GPU监视器
     * @param gpuvendor GPU型号厂商
     * @return
     */
    static std::shared_ptr<GpuMonitorInterface> createGpuMonitor(GPUVendor &gpuvendor);
};

#endif // GPUMONITORFACTORY_H
